package co.inventario.modelo.fachada;

import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.entidad.OrdenCompraDTO;
import co.inventario.modelo.negocio.OrdenCompraNegocio;
import co.inventario.transversal.DAOFactorySQLServer;

public class OrdenCompraFachada {

	public void crear(OrdenCompraDTO ordenCompraDTO) throws Exception {
		DAOFactorySQLServer daoFactorySQLServer = new DAOFactorySQLServer();
		OrdenCompraNegocio ordenCompraNegocio = new OrdenCompraNegocio();
		try {
			ordenCompraNegocio.crear(ordenCompraDTO, daoFactorySQLServer.obtenerConexion());
			daoFactorySQLServer.confirmarTransaccion();
		} catch (SQLException exception) {
			daoFactorySQLServer.cancelarTransaccion();
			throw new Exception("Se ha presentado un problema intentando crear la orden de compra.");
		} catch (Exception exception) {
			daoFactorySQLServer.cancelarTransaccion();
			throw exception;
		} finally {
			daoFactorySQLServer.cerrarConexion();
		}
	}

	public void actualizar(OrdenCompraDTO ordenCompraDTO) throws Exception {
		DAOFactorySQLServer daoFactorySQLServer = new DAOFactorySQLServer();
		OrdenCompraNegocio ordenCompraNegocio = new OrdenCompraNegocio();
		try {
			ordenCompraNegocio.actualizar(ordenCompraDTO, daoFactorySQLServer.obtenerConexion());
			daoFactorySQLServer.confirmarTransaccion();
		} catch (SQLException sqlException) {
			daoFactorySQLServer.cancelarTransaccion();
			throw new Exception("Se ha presentado un problema intentando actualizar la orden de compra.");
		} catch (Exception exception) {
			daoFactorySQLServer.cancelarTransaccion();
			throw exception;
		} finally {
			daoFactorySQLServer.cerrarConexion();
		}
	}

	public OrdenCompraDTO consultarSoloConsecutivo() throws Exception {
		DAOFactorySQLServer daoFactorySQLServer = new DAOFactorySQLServer();
		OrdenCompraNegocio ordenCompraNegocio = new OrdenCompraNegocio();
		OrdenCompraDTO ordenCompraDTOConsultado = null;
		try {
			ordenCompraDTOConsultado = ordenCompraNegocio.consultarSoloConsecutivo(daoFactorySQLServer.obtenerConexion());
		} catch (SQLException exception) {
			throw new Exception("Se ha presentado un problema intentando consultar el consecutivo de la orden de compra.");
		} catch (Exception exception) {
			throw exception;
		} finally {
			daoFactorySQLServer.cerrarConexion();
		}
		return ordenCompraDTOConsultado;
	}

	public ArrayList<OrdenCompraDTO> consultarTodo() throws Exception {
		DAOFactorySQLServer daoFactorySQLServer = new DAOFactorySQLServer();
		OrdenCompraNegocio ordenCompraNegocio = new OrdenCompraNegocio();
		ArrayList<OrdenCompraDTO> ordenCompraDTOLista = null;
		try {
			ordenCompraDTOLista = ordenCompraNegocio.consultarTodo(daoFactorySQLServer.obtenerConexion());
		} catch (SQLException exception) {
			throw new Exception("Se ha presentado un problema intentando consultar las ordenes de compra.");
		} catch (Exception exception) {
			throw exception;
		} finally {
			daoFactorySQLServer.cerrarConexion();
		}
		return ordenCompraDTOLista;
	}
}
